import 'package:flutter_test/flutter_test.dart';
import 'package:ume/ume.dart';
import 'package:ume_core/ume_core.dart';
import 'package:ume_kit_console/ume_kit_console.dart';

// 自定义Console子类用于测试
class TestConsole extends Console {
  @override
  String get name => 'unique_console_test';
}

void main() {
  // 初始化测试绑定
  TestWidgetsFlutterBinding.ensureInitialized();

  group('UME Console插件注册测试', () {
    test('Console插件可以成功注册', () {
      // 创建Console插件实例
      final consolePlugin = Console();
      
      // 注册插件
      PluginManager.instance.register(consolePlugin);
      
      // 验证插件是否成功注册
      final registeredPluginsMap = PluginManager.instance.pluginsMap;
      expect(registeredPluginsMap.isNotEmpty, true);
      expect(registeredPluginsMap.containsKey(consolePlugin.name), true);
    });

    test('注册的Console插件可以通过名称访问', () {
      // 创建并注册Console插件
      final consolePlugin = Console();
      PluginManager.instance.register(consolePlugin);
      
      // 获取注册的插件
      final registeredPlugin = PluginManager.instance.pluginsMap[consolePlugin.name];
      
      // 验证插件存在且类型正确
      expect(registeredPlugin, isNotNull);
      expect(registeredPlugin.runtimeType, Console);
    });

    test('Console插件名称正确', () {
      // 创建Console插件实例
      final consolePlugin = Console();
      
      // 验证插件名称
      expect(consolePlugin.name, 'Console');
      expect(consolePlugin.displayName, 'Console');
    });

    test('PluginManager可以注册插件并通过名称检索', () {
      // 创建一个自定义的Console子类实例
      final testConsole = TestConsole();
      
      // 注册自定义Console插件
      PluginManager.instance.register(testConsole);
      
      // 验证可以通过唯一名称找到插件
      final retrievedPlugin = PluginManager.instance.pluginsMap[testConsole.name];
      expect(retrievedPlugin, isNotNull);
      expect(retrievedPlugin.runtimeType, TestConsole);
    });
  });
}